The use of digital cameras is spreading rapidly, and the capabilities and performance of digital photography equipment (including digital cameras and so-called camera phones) is also increasing rapidly. The image resolution of camera phones is expected to follow an exponential growth curve, with 2-megapixel (two million picture elements) image resolution cameras now available in camera phones.
The increasing camera resolution imposes more stringent requirements on image storage subsystems. For example, a picture taken by a 4-megapixel camera can require up to 2 MB (two million bytes) of storage space. On the other hand, although the capacity of memory cards (the subsystem responsible for image storage) is also increasing, there are many occasions that the memory card becomes full before the stored images can be transferred to another device (e.g., to a personal computer or PC). In these situations, new pictures cannot be taken due to lack of storage. When the memory card is full, the typical consumer faces a difficult choice of purchasing at least one additional expensive memory card (which is not always feasible, depending on the user's location) or deleting one or more stored images.
Furthermore, digital cameras and camera phones are typically multi-purpose devices where a number of applications can be required to share a single memory card. For example, one commercially-available digital camera is capable of recording video for up to three minutes, at a data rate of approximately 10 MB/minute. Thus, the use of video recording substantially reduces the memory usable for photography. As it is expected that many camera phones will offer video recording capability in the near future, the same problems will be experienced.
File system compression has been used in operating systems to reduce memory (disk) usage. However, such systems do not address the problems considered herein, since image files are often typically compressed (using a lossy compression method such as JPEG compression) before being stored in the file system. As a result, they cannot be effectively further compressed using typical file compression tools.
Another type of conventional compression, known as cache-based compaction, uses the similarity of two web objects to reduce the amount of the network traffic. Cache-based compaction works as follows: a web client requests a URL via a web proxy. The proxy fetches the URL on behalf of the client. The proxy then computes the difference of the requested web object with the most similar web object currently cached in the web client, and transmits only the difference. The client then restores the requested web object by combining the cached object and the difference.
Version control systems are also known in the prior art, and are widely used in the software industry to track changes in source code. Version control systems may use a technique known as delta compression to compactly store a later version of a file by storing only the difference of the later file version relative to an earlier version of the file.
For various reasons explained below, these conventional file size reduction techniques are not suitable for use with image files generated by an image capture device, such as a digital camera that is used alone or as part of another device, such as a camera phone.